home *** CD-ROM | disk | FTP | other *** search
/ Freaks Macintosh Archive / Freaks Macintosh Archive.bin / Freaks Macintosh Archives / Internet / tcpreroute1.3d.sit / tcp_reroute_sethost.c < prev    next >
C/C++ Source or Header  |  1999-01-27  |  2KB  |  91 lines

  1. /* TCP ReRoute - Set Host (for linux)
  2.   *
  3.   * This is the Set Host program for the TCP ReRouter.
  4.   *                                                                                                                                -Seti
  5.   * To compile: gcc tcp_reroute_sethost.c
  6.   */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <errno.h>
  11. #include <netdb.h>
  12. #include <sys/types.h>
  13. #include <netinet/in.h>
  14. #include <unistd.h>
  15. #include <string.h>
  16. #include <arpa/inet.h>
  17. #include <sys/time.h>
  18.  
  19. main(int argc, char *argv[])
  20. {
  21. int fd;
  22. int sin_size;
  23. int bytes, i;
  24. char data[100];
  25. char new_data[100]="";
  26. char new_host[50];
  27. char new_port[6];
  28. struct sockaddr_in dest_addr;
  29. struct hostent *he;
  30.  
  31.  
  32. if(argc != 2) {
  33.     printf("Usage: %s host\n", argv[0]);
  34.     return -1;
  35. }
  36.  
  37. if ((he=gethostbyname(argv[1])) == NULL) {  /* get the host info */
  38.         printf("Error: Unknown host.\n");
  39.     return -1;
  40. }
  41.  
  42. dest_addr.sin_family = AF_INET;
  43. dest_addr.sin_port = htons(3627);
  44. dest_addr.sin_addr = *((struct in_addr *)he->h_addr);
  45. bzero(&(dest_addr.sin_zero), 8);
  46.  
  47.  
  48. if((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
  49.     printf("Error: Could not open socket");
  50.     return -1;
  51. }
  52.  
  53. if(connect(fd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)) == -1) {
  54.         printf("Error: Could not connect to socket.\n");
  55.     return -1;
  56. }
  57.  
  58. send(fd, "set_RTH_here", 12, 0);
  59.  
  60. bytes = recv(fd, data, 50, 0);
  61. data[bytes] = '\0';
  62.  
  63. printf("The current host is: ");
  64.  
  65. for(i=20; i<bytes; i++)
  66.     printf("%c", data[i]);
  67.  
  68. printf("\nChange the destination host: ");
  69. scanf("%s", &new_host);
  70.  
  71. printf("Change the destination port: ");
  72. scanf("%s", &new_port);
  73.  
  74. strcat(new_data, "set_remote_telnet_host:");
  75. strcat(new_data, new_host);
  76. strcat(new_data, ":");
  77. strcat(new_data, new_port);
  78.  
  79. send(fd, new_data, strlen(new_data), 0);
  80.  
  81. bytes = recv(fd, data, 9, 0);
  82. data[bytes] = '\0';
  83.  
  84. printf("%s\n---", &data);
  85. printf("\nDestination host: %s", &new_host);
  86. printf("\nDestination port: %s", &new_port);
  87. printf("\nTCP ReRouter will listen on port %s for connections.\n", &new_port);
  88.  
  89. //Let server kill the connection...
  90. return 0;
  91. }